// using UnityEngine;
// using GGameFramework.Core.FSM;
//
// namespace GGameFramework.Examples.FSM
// {
//     /// <summary>
//     /// 玩家空闲状态
//     /// </summary>
//     public class PlayerIdleState : FsmState<PlayerController>
//     {
//         private const string KEY_MOVE_INPUT = "MoveInput";
//         private const string KEY_JUMP_INPUT = "JumpInput";
//         private const string KEY_ATTACK_INPUT = "AttackInput";
//         private const string KEY_IS_GROUNDED = "IsGrounded";
//         
//         private float m_IdleTimer;
//         private const float IDLE_ANIMATION_DELAY = 3f; // 3秒后播放空闲动画
//         
//         protected internal override void OnInit(IFsm<PlayerController> fsm)
//         {
//             Debug.Log("空闲状态初始化");
//         }
//         
//         protected internal override void OnEnter(IFsm<PlayerController> fsm)
//         {
//             PlayerController player = fsm.Owner;
//             m_IdleTimer = 0f;
//             
//             // 重置动画参数
//             if (player.GetAnimator() != null)
//             {
//                 player.GetAnimator().SetBool("IsMoving", false);
//                 player.GetAnimator().SetBool("IsJumping", false);
//                 player.GetAnimator().SetBool("IsAttacking", false);
//                 player.GetAnimator().SetBool("IsHurt", false);
//                 player.GetAnimator().SetBool("IsDead", false);
//             }
//             
//             Debug.Log("进入空闲状态");
//         }
//         
//         protected internal override void OnUpdate(IFsm<PlayerController> fsm, float elapseSeconds, float realElapseSeconds)
//         {
//             PlayerController player = fsm.Owner;
//             
//             // 检查输入状态
//             Vector3 moveInput = fsm.GetData<Vector3Variable>(KEY_MOVE_INPUT)?.Value ?? Vector3.zero;
//             bool jumpInput = fsm.GetData<BoolVariable>(KEY_JUMP_INPUT)?.Value ?? false;
//             bool attackInput = fsm.GetData<BoolVariable>(KEY_ATTACK_INPUT)?.Value ?? false;
//             bool isGrounded = fsm.GetData<BoolVariable>(KEY_IS_GROUNDED)?.Value ?? true;
//             
//             // 状态转换逻辑
//             if (attackInput && player.CanAttack())
//             {
//                 // 攻击输入优先级最高
//                 ChangeState<PlayerAttackState>(fsm);
//                 return;
//             }
//             
//             if (jumpInput && isGrounded)
//             {
//                 // 跳跃输入
//                 ChangeState<PlayerJumpState>(fsm);
//                 return;
//             }
//             
//             if (moveInput.magnitude > 0.1f)
//             {
//                 // 移动输入
//                 ChangeState<PlayerMoveState>(fsm);
//                 return;
//             }
//             
//             // 空闲状态特殊逻辑
//             m_IdleTimer += elapseSeconds;
//             if (m_IdleTimer >= IDLE_ANIMATION_DELAY)
//             {
//                 // 播放空闲动画
//                 if (player.GetAnimator() != null)
//                 {
//                     player.GetAnimator().SetTrigger("IdleAction");
//                 }
//                 m_IdleTimer = 0f; // 重置计时器
//             }
//             
//             // 检查生命值状态
//             int currentHealth = fsm.GetData<IntVariable>("Health")?.Value ?? 100;
//             if (currentHealth <= 0)
//             {
//                 ChangeState<PlayerDeathState>(fsm);
//                 return;
//             }
//         }
//         
//         protected internal override void OnLeave(IFsm<PlayerController> fsm, bool isShutdown)
//         {
//             Debug.Log("离开空闲状态");
//         }
//         
//         protected internal override void OnDestroy(IFsm<PlayerController> fsm)
//         {
//             Debug.Log("空闲状态销毁");
//         }
//         
//         public override string GetStateName()
//         {
//             return "空闲状态";
//         }
//         
//         public override bool CanTransitionTo<TState>(IFsm<PlayerController> fsm)
//         {
//             // 空闲状态可以转换到任何其他状态
//             return true;
//         }
//     }
// }
